"""
socket服务端
这段代码是单线程、顺序执行的，可接受多次消息
"""
import socket
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址
s.bind(("127.0.0.1", 8888))
# 监听
s.listen(5) # 5表示最大连接数
# 循环等待客户端连接
while True:
    conn, addr = s.accept()
    print(f"Connected by {addr}")

    # 接收客户端数据  阻塞直到有消息传入
    while True:
        data = conn.recv(1024)
        if not data:  # 客户端断开：中间连接被关闭或超时或者接受到空数据 为True
            break
        print("Received:", data.decode())
        #输入返回的消息
        msg = input("Input your message:")
        if msg == "exit":
            conn.close()
            break
        conn.sendall(msg.encode())
        # conn.sendall(f"Echo: {data.decode()}, from server".encode())

    conn.close()